export interface EditorOptions {
  height?: string;
  theme?: string;
  placeholder?: string;
  toolbarConfig?: ToolbarConfig;
  previewVisible?: boolean;
  fullscreen?: boolean;
}

export interface ToolbarConfig {
  items?: ToolbarItem[];
  customItems?: ToolbarItem[];
}

export interface ToolbarItem {
  name: string;
  icon?: string;
  title?: string;
  action?: () => void;
  isActive?: boolean;
  children?: ToolbarItem[];
}

export interface LinkDialogData {
  text: string;
  url: string;
  title?: string;
}

export interface ImageDialogData {
  url: string;
  alt?: string;
  title?: string;
}

export interface HistoryRecord {
  content: string;
  timestamp: number;
}

export interface PluginOptions {
  name: string;
  hooks?: Record<string, Function>;
  toolbar?: ToolbarItem[];
}

export interface ThemeOptions {
  name: string;
  styles: Record<string, string>;
}